查看原文
其他

今天,讲一个老外学习编程的故事。。。

忆蓉之心 Java面试那些事儿 2019-12-19

今天,在 Quora 上闲逛,看到一篇不错的文章,作者讲述了他是如何一步一步踏上编程这条不归路的。因此,我便用我这撇脚的英语水平给大家翻译一下,希望你能从他的故事中有所启发。


原文大意如下:


当我很小的时候,我便开始学习如何编写网站,到如今我已经编写并创建了许多网站。下面的篇幅我将主要回顾我建立的一系列网站,我还记得在我11岁时,便建立了自己的第一个网站。我希望读者朋友能够理解一点,如果你想学好编程,那么做大量的辅助项目是很有必要的。


其实,学习新技能的最佳方式是练习,练习,再练习;就我所接触的优秀程序员都有一个特点——乐此不彼的喜欢编程,而且很努力。一般来说,学习编程很简单,并不需要你有什么超人的能力,他只需要你不断的动手实践。


你只需要选择什么时候开始,跟你到底想做什么没有关系。我认识的很多优秀的程序员每个人都有各自不同的理由来开始学习编程。有的为了学习制作视频游戏而开始;有的为了解决计算机问题「或者更有效的为了工作」而开始;有的为了制造有趣的产品而开始。甚至有些「黑客」是为了打破芸芸众生口中的不可能而开始,因为他们想深入了解机器,解决困难问题。


这些「优秀的程序员」都有一个共同的特点:他们在生活中的某个阶段沉迷于编程,随后花了很长实践,并做了很多很多项目。


我的第一个网站——Feross 的网站


当我十一二岁时,我想建一个自己的网站。我现在不记得当时为什么想要建这么一个网站,目前只记得做过这么一个网站。为了做它,我在网上搜索相关网页,浏览器以及 HTML 如何工作的信息。我发现的很多信息都是过时的,完全错误的或不提倡的做法,但它真的很有趣,我学到了很多很好的东西。


尽管我在网上找到的信息很少,但我还是能够创建一个简单的网站,我称之为「Feross 的网站」。我使用了 Microsoft Frontpage 构建它,Frontpage 是一款非常酷的 HTML 编辑器。我可以使用熟悉的标签「如Bold,Italics等」进行更改,并实时的查看它的效果。


以下是我的第一个网站的截图。目前它已下线了。

您无法在上面的屏幕截图中看到它的其它效果,但网站上几乎每个元素都会闪烁,移动或发出声音。我在网站的每个页面上放了一首不同的 MIDI 歌曲。除非你把扬声器静音,否则它们都会自动播放,无法停止播放音乐。这是00年代早期的旧网页了,在当时算设计很好的网站了^_^。


随着年龄的增长,我试图通过重新设计来改善我的网站。我使用了我在网上找到的免费网站模板,并用 Microsoft Paint 进行修改图片。

尽管我在很大程度上依赖于现有模板,但我认为这是一种非常好的方法,便于我了解 HTML 和 Web 浏览器如何工作。「Feross网站」没有其它目的,除了收集我小时制作的一些电影,所以一段时间后它变得无聊。


我的第一个真实项目


在 9 年级「14岁」,我和我的朋友非常痴迷于在 Newgrounds 和 eBaumsWorld 等网站上观看 Flash 电影和视频「这是在 2005 年以前,当时 YouTube 尚未存在」。我花了很多时间在这些网站上,所以我知道所有最好的视频和游戏。我想制作一个网站,方便于我在一个地方找到我最喜欢的 flash 动画,视频和很酷的游戏。这就是我创建 FreeTheFlash.com 的初衷。

我使用了从「Feross的网站」中学到的所有 HTML ,并利用 Dreamweaver 工具和模板来制作网站。

后来,我意识到我应该让网站变得动态「我记得当时经常听到这个流行语」,这基本上意味着该网站将由 PHP 等编程语言提供支持,而不仅仅是静态 HTML 。因此,我从亚马逊以 20 美元的价格购买了一本名为 《PHP And MySQL for Dynamic Websites》的书籍,并使用 PHP 和 MySQL 进行重新设计了该网站。

我在上了高中时,继续在 FreeTheFlash 花费了 2 年。我第一次真正体会到成功 —— 它在2006年拥有 600,000 名访问者和 300 万页面浏览量。FreeTheFlash 教会我制作产品,优化产品以及大流量的快感,一个词形容「真棒」。这让我有了想要建立更多网站的想法。


我的第二个网站


在高中时,我为一些 AP 课程做了很好的笔记。所以,在 11 年级,我决定将这些笔记放在网上,为那些不想读教科书的学生使用,我建立了一个名为 StudyNotes 的网站,我用 PHP 和一个叫做 Joomla 的内容管理系统构建了这个网站。我也尝试过 Drupal,但发现它太复杂了。


同年,我还为我学校的Key Club分会建立了一个网站。它存档在这里「参考1」。


在此期间,我花了大量的空闲时间阅读 WebmasterWorld 「参考2」,这是一个网站发布者和 SEO 专家的论坛,可以推测 Google 算法,讨论 AdSense 技巧和网站设计优化问题。


大量的学习和阅读


在我到斯坦福大学之后,我学习了很多很棒的计算机科学课程,比如 CS106X 和 CS107。


我几乎所有的时间都在课堂上阅读有关设计,编程,浏览器和 JavaScript 的知识。


我读了很多不同的东西。主要是一流的设计师和程序员的博客。有关其中一些博客的示例「参考3」。


大爆发


在 2010 年夏天,我在 Facebook 实习期间,我建立了 YouTube Instant;这是一个视频网站,可让您实时搜索YouTube。该网站在推出后的 10 天内吸引了100万访问者,YouTube 首席执行官也在推特上发了一份工作邀请「参考4」。


我知道 YouTube Instant 的成功主要归功于良好的时机和一点运气。


还在继续


我注意到很多人都在使用 YouTube 即时收听音乐视频,这让我想到了使用 YouTube API 做一些很酷的东西。所以,我的朋友 Jake Becker 和我决定在 2011 年的前 3 个月建立 Instant.fm,这是一种与朋友分享音乐播放列表的简单方法。在这个项目中,我们都学到了很多新东西。


我们在这个项目中掌握了这些:

  • jQuery

  • CSS

  • Python

  • Tornado 

  • Git & GitHub

  • Last.fm API

  • YouTube API

  • 在团队中工作


还有一些我们学习如何使用的东西:

  • Nginx

  • Supervisor

  • SQLAlchemy

  • Apache Ant 


做是学习编程的最快方法!


从 11 岁开始到如今我所建立的所有网站中,学到一点,如果你想学习编程,那么你需要开始创建产品!马上。别再找借口。


做是学习编程的最快方法。


从前到后阅读编程语言书确实很无聊。但是,如果你有一个项目,你可以随时了解你需要知道的内容,这在速度和内容掌握方面会更有效。


计算机科学课


在大学,学习 CS 课程是学习编程的另一种好方法。大多数优秀的 CS 课程都强调学习 CS 领域的重要概念和范例,而不是教授特定的编程语言。对于那些从未接受过正规教育的自学成才的程序员来说,这可以是一次令人大开眼界的经历。


我记得上斯坦福大学的第一个 CS 课程「关于 C++ 的课程」中思考「有变量不以$符号开头吗?」,但那时,我只会 PHP!我花了一段时间才改掉在每个变量名之前加上$符号的习惯!


在一家软件公司工作


另一种在编程方面更好的方法是在 Facebook 或 Quora 这样的软件公司工作,这是我在过去两个夏天所做的。您将学到更好的编程方式,如何阅读和理解其他人的代码,以及如何与团队一起开展大型项目。


依然最重要的是——学习编程的最好方法是做项目。


如何学习编程


做项目。

购买和阅读编程书籍。

做项目。

参加计算机科学课程。

做项目。

阅读编程博客。

做项目。


这是我得到的最好的建议。


参考


「1」https://feross.net/orhskeyclub.com

「2」http://www.webmasterworld.com

「3」https://gist.github.com/feross/4508913

「4」https://feross.org/youtube-instant-media-frenzy


最后,欢迎在留言区写下你的感悟。


英文作者:Feross Aboukhadijeh

原文地址:https://feross.org/how-i-learned-to-program-computers


推荐阅读

我靠,为什么Java注释里的代码被执行了?

—————END—————

看更多技术好文

请长按下方图片扫码关注

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存